using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkDiagramTools
{
    /// <summary>
    /// <para>Delete Diagram</para>
    /// <para>Deletes one or more stored network diagrams, which are optionally filtered by their diagram template names, related to a given network.</para>
    /// <para>删除一个或多个存储的网络逻辑示意图，这些网络逻辑示意图可选择按其逻辑示意图模板名称进行筛选，与给定网络相关。</para>
    /// </summary>    
    [DisplayName("Delete Diagram")]
    public class DeleteDiagram : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public DeleteDiagram()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_diagrams">
        /// <para>Input Network or Network Diagram Layer</para>
        /// <para>The input network diagram layer to delete, or the utility network or trace network layer on which the set of specified input diagram names to delete are based.</para>
        /// <para>要删除的输入网络逻辑示意图图层，或者要删除的指定输入逻辑示意图名称集所基于的公共设施网络或追踪网络图层。</para>
        /// </param>
        public DeleteDiagram(object _in_diagrams)
        {
            this._in_diagrams = _in_diagrams;
        }
        public override string ToolboxName => "Network Diagram Tools";

        public override string ToolName => "Delete Diagram";

        public override string CallName => "nd.DeleteDiagram";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_diagrams, _template_names, _diagram_names, _out_diagrams];

        /// <summary>
        /// <para>Input Network or Network Diagram Layer</para>
        /// <para>The input network diagram layer to delete, or the utility network or trace network layer on which the set of specified input diagram names to delete are based.</para>
        /// <para>要删除的输入网络逻辑示意图图层，或者要删除的指定输入逻辑示意图名称集所基于的公共设施网络或追踪网络图层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Network or Network Diagram Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_diagrams { get; set; }


        /// <summary>
        /// <para>Template Names</para>
        /// <para>The names of the templates for which the related diagrams are to be processed.</para>
        /// <para>要处理相关关系图的模板的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Template Names")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _template_names { get; set; } = null;


        /// <summary>
        /// <para>Diagram Names</para>
        /// <para>The names of the diagrams to be processed.</para>
        /// <para>要处理的逻辑示意图的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Diagram Names")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _diagram_names { get; set; } = null;


        /// <summary>
        /// <para>Output Diagrams</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Diagrams")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_diagrams { get; set; }


        public DeleteDiagram SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}